OAuth এবং OpenID Connect (OIDC) দুটি জনপ্রিয় অথেন্টিকেশন এবং অথোরাইজেশন প্রটোকল যা আধুনিক ওয়েব অ্যাপ্লিকেশন এবং API গুলির নিরাপত্তা সুনিশ্চিত করতে ব্যবহৃত হয়। OAuth মূলত অথোরাইজেশন (Authorization) প্রটোকল, যা ক্লায়েন্ট অ্যাপ্লিকেশনকে ব্যবহারকারীর পক্ষ থেকে কিছু নির্দিষ্ট এক্সেস দেওয়ার সুযোগ দেয়। অন্যদিকে, OpenID Connect একটি অথেন্টিকেশন (Authentication) প্রটোকল, যা ব্যবহারকারীর পরিচয় নিশ্চিত করতে সাহায্য করে।
এদের ইন্টিগ্রেশন সাধারণত একটি আধুনিক ওয়েব অ্যাপ্লিকেশন বা API এর মধ্যে নিরাপদ অথেন্টিকেশন এবং অথোরাইজেশন সিস্টেম তৈরি করার জন্য ব্যবহৃত হয়। নিচে ASP.Net MVC অ্যাপ্লিকেশনে OAuth এবং OpenID Connect কিভাবে ইন্টিগ্রেট করা যায় তা আলোচনা করা হলো।
OAuth 2.0 হলো একটি অ্যাক্সেস অথোরাইজেশন ফ্রেমওয়ার্ক যা ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে একটি ব্যবহারকারীর তথ্য বা সম্পদ অ্যাক্সেস করার অনুমতি দেয়, তবে সরাসরি ব্যবহারকারীর পাসওয়ার্ড প্রদান না করে।
OAuth 2.0 সাধারণত এই প্রক্রিয়া অনুসরণ করে:
OpenID Connect (OIDC) হল OAuth 2.0 এর উপর ভিত্তি করে তৈরি একটি অথেন্টিকেশন প্রটোকল। OIDC OAuth 2.0 এর মাধ্যমে পরিচয়ের যাচাই (Authentication) করার ক্ষমতা প্রদান করে, যা মূলত একটি ব্যবহৃত টোকেনের মাধ্যমে ব্যবহারকারীর তথ্য পাওয়া যায়।
OIDC একটি "ID Token" প্রদান করে, যা ব্যবহারকারীর পরিচয় নিশ্চিত করার জন্য ব্যবহৃত হয়। এর মাধ্যমে, ক্লায়েন্ট অ্যাপ্লিকেশনটি ব্যবহারকারীর পরিচয় ও প্রোফাইল তথ্য পেতে পারে। এই প্রক্রিয়া সাধারণত OAuth 2.0 এর অ্যাক্সেস টোকেন ব্যবহার করে হয়।
ASP.Net MVC-তে OAuth এবং OpenID Connect ইন্টিগ্রেট করতে, IdentityServer4 অথবা ASP.Net Core Identity ব্যবহার করা যেতে পারে। তবে এখানে, OAuth 2.0 এবং OpenID Connect ইন্টিগ্রেট করতে OAuth 2.0 প্রোভাইডার (যেমন গুগল, ফেসবুক) ব্যবহার করে একটি সাধারণ উদাহরণ দেয়া হলো।
প্রথমে, ASP.Net MVC অ্যাপ্লিকেশনে OAuth এবং OpenID Connect এর সাপোর্টের জন্য কিছু NuGet প্যাকেজ ইনস্টল করতে হবে। এগুলোর মধ্যে সবচেয়ে জনপ্রিয় হল Microsoft.Owin.Security.OAuth এবং Microsoft.Owin.Security.OpenIdConnect।
Install-Package Microsoft.Owin.Security.OAuth
Install-Package Microsoft.Owin.Security.OpenIdConnect
পরবর্তী ধাপে, OAuth এবং OpenID Connect কনফিগার করার জন্য Startup.cs ফাইলে মডিফিকেশন করতে হবে।
public void Configuration(IAppBuilder app)
{
// OAuth2 Authentication
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/token"),
Provider = new OAuthProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
AllowInsecureHttp = true
});
// OpenID Connect Authentication
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "your-client-id",
Authority = "https://your-identity-provider.com",
RedirectUri = "https://your-redirect-uri",
ResponseType = "id_token token",
Scope = "openid profile",
SignInAsAuthenticationType = "Cookies",
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
// Handle authentication failure
return Task.CompletedTask;
}
}
});
}
এখানে, OAuth সার্ভার এবং OpenID Connect সার্ভার কনফিগার করা হয়েছে। ClientId
, Authority
, এবং RedirectUri
এর মান আপনার OAuth/OpenID প্রোভাইডার থেকে পাওয়া যাবে।
OpenID Connect সার্ভার থেকে সফলভাবে প্রাপ্ত ID Token এবং Access Token হ্যান্ডল করার জন্য আপনি AuthenticationCallback
মেথড ব্যবহার করতে পারেন।
public ActionResult Callback(string id_token, string access_token)
{
if (!string.IsNullOrEmpty(id_token))
{
var payload = ParseIdToken(id_token);
// User details from payload
var userName = payload["preferred_username"];
}
return RedirectToAction("Index", "Home");
}
এখানে, id_token
থেকে ব্যবহারকারীর পরিচয় এবং অন্যান্য তথ্য উদ্ধার করা হয়েছে।
একটি নিরাপদ অ্যাপ্লিকেশন তৈরি করার জন্য, Access Token এবং ID Token এর ভ্যালিডেশন নিশ্চিত করতে হবে। এটি সাধারণত একটি JWT টোকেন (JSON Web Token) হিসেবে হবে, যেটি টোকেন ভ্যালিডেশন লাইব্রেরির মাধ্যমে যাচাই করা হয়।
OAuth 2.0 এবং OpenID Connect দুটি গুরুত্বপূর্ণ প্রটোকল যা ব্যবহারকারীর অথেন্টিকেশন এবং অথোরাইজেশন নিশ্চিত করে। ASP.Net MVC-তে OAuth এবং OpenID Connect ইন্টিগ্রেশন সাধারণত ব্যবহারকারীর নিরাপদ লগইন এবং API অ্যাক্সেস নিয়ন্ত্রণে ব্যবহৃত হয়। OAuth 2.0 দ্বারা অ্যাক্সেস টোকেন এবং OpenID Connect দ্বারা ID Token পাওয়া যায়, যা ব্যবহারকারীর পরিচয় যাচাই করতে সাহায্য করে। ASP.Net MVC অ্যাপ্লিকেশনে OAuth এবং OpenID Connect ইন্টিগ্রেট করতে Owin Middleware এবং Identity Server ব্যবহার করা যেতে পারে, যা নিরাপদ এবং স্কেলেবল অ্যাপ্লিকেশন তৈরিতে সহায়ক।
common.read_more